
# 匿名函数+reduce 实现1*2*3*...*n
from functools import reduce
n = 6
print(reduce(lambda x,y: x*y,range(1,n+1)))

# filter 函数 能被3整除的数
def f(i):
    if i % 3 == 0:
        return i
print(list(filter(f,range(1,101))))

# map函数 求list[1-10]各项的平方
def f(i):
    return i**2
print(list(map(f,range(1,11))))

# 将列表[1,4,5,9] 转换成 '1459'的字符串
from functools import reduce
def f(x, y):
    return x * 10 + y
print(reduce(f, [1, 4, 5, 9]))

# 这是一个字符串排序，排序规则∶小写<大写<奇数<偶数.
# s = 'asdf234GDSdsf23’#排序:小写-大写-奇数-偶数·
# 原理:先比较元组的第一个值，FALSE
s = "asdf234GDSdsf23"
print(sorted(s,key=lambda x:(x.isdigit(), x.isdigit() and int(x)%2==0, x.isupper(), x)))